/**
 ******************************************************************************
 * @file           : bsp_rtc_config.h
 * @brief          : RTC Configuration File (STM32F1xx)
 ******************************************************************************
 * @attention
 *
 * RTC配置文件
 * 实时时钟驱动配置
 * 用户根据实际需求修改此文件
 *
 ******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __BSP_RTC_CONFIG_H
#define __BSP_RTC_CONFIG_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "stm32f1xx.h"

/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/

/* ============================================================================ */
/*                       日志系统配置（改这里的数字）                             */
/* ============================================================================ */
/* 日志后端选择：1=EasyLogger, 2=printf, 0=关闭 */
#define RTC_USE_LOG     1

/* 根据配置自动定义日志宏 */
#if (RTC_USE_LOG == 1)
    /* 使用EasyLogger */
    #ifndef LOG_TAG
        #define LOG_TAG    "RTC"
    #endif
    #include "elog.h"
    
#elif (RTC_USE_LOG == 2)
    /* 使用printf */
    #include <stdio.h>
    #define log_i(fmt, ...)     printf(fmt "\r\n", ##__VA_ARGS__)
    #define log_w(fmt, ...)     printf("[WARN] " fmt "\r\n", ##__VA_ARGS__)
    #define log_e(fmt, ...)     printf("[ERROR] " fmt "\r\n", ##__VA_ARGS__)
    #define log_d(fmt, ...)     printf("[DEBUG] " fmt "\r\n", ##__VA_ARGS__)
    
#else
    /* 关闭日志 */
    #define log_i(fmt, ...)
    #define log_w(fmt, ...)
    #define log_e(fmt, ...)
    #define log_d(fmt, ...)
#endif

/* ============================================================================ */
/*                          RTC配置（用户可修改）                                */
/* ============================================================================ */

/* RTC时钟源选择 */
#define RTC_CLOCK_SOURCE_LSE        1       /*!< 1:使用LSE(外部低速晶振32.768KHz), 0:使用LSI(内部低速RC 40KHz) */

/* RTC分频器配置（LSE时钟源） */
#if RTC_CLOCK_SOURCE_LSE
    #define RTC_ASYNCH_PREDIV       0x7F    /*!< 异步分频器值(0-0x7F) */
    #define RTC_SYNCH_PREDIV        0xFF    /*!< 同步分频器值(0-0x7FFF) */
#else
    #define RTC_ASYNCH_PREDIV       0x7F
    #define RTC_SYNCH_PREDIV        0x137   /*!< LSI约40KHz */
#endif

/* RTC备份寄存器标志 */
#define RTC_BKP_FLAG_INITIALIZED    0x5A5A  /*!< RTC已初始化标志 */
#define RTC_BKP_REG_INDEX           HAL_RTCEx_BKUPRead(&sg_rtc_handle, RTC_BKP_DR1)

/* Exported macro ------------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/

#ifdef __cplusplus
}
#endif

#endif /* __BSP_RTC_CONFIG_H */
